--[[
时间控制业务逻辑模块
功能：控制脚本运行时间，管理福利检查和进度显示
参数：
  总运行时间 - 总运行时间（秒）
  福利检查间隔 - 福利检查间隔（秒）
返回值：true表示继续运行，false表示结束
--]]

-- 导入依赖
local node_config = require("node_config")

-- 全局状态
local 开始时间 = 0
local 累计运行时间 = 0
local 是否启用时间控制 = true
local 福利检查间隔 = 1800  -- 默认30分钟检查一次福利
local 总运行时间 = 0       -- 总运行时间（秒）

-- 初始化时间控制
local function 初始化时间控制(配置)
    配置 = 配置 or {}
    
    if 配置.总运行时间 then
        总运行时间 = 配置.总运行时间
    end
    
    if 配置.福利检查间隔 then
        福利检查间隔 = 配置.福利检查间隔
    end
    
    if 配置.是否启用时间控制 ~= nil then
        是否启用时间控制 = 配置.是否启用时间控制
    end
    
    -- 重置开始时间
    开始时间 = 0
    累计运行时间 = 0
    
    return true
end

-- 时间控制业务逻辑
local function 功能_时间控制业务逻辑()
    -- 初始化开始时间（如果还未初始化）
    if 开始时间 == 0 then
        开始时间 = os.time()
        local 时间信息 = os.date("*t", 开始时间)
        _G.调试输出(string.format("开始: %02d:%02d:%02d",
            时间信息.hour, 时间信息.min, 时间信息.sec))
    end
    
    -- 计算当前运行时间
    local 当前时间 = os.time()
    累计运行时间 = 当前时间 - 开始时间
    
    -- 检查总运行时间
    if 是否启用时间控制 and 累计运行时间 >= 总运行时间 then
        local 结束时间信息 = os.date("*t", 当前时间)
        _G.调试输出(string.format("任务完成，结束时间: %02d:%02d:%02d",
            结束时间信息.hour, 结束时间信息.min, 结束时间信息.sec))
        -- 销毁HUD
        if _G.销毁HUD then
            _G.销毁HUD()
        end
        return false
    end
    
    -- 每2分钟点击一次福利页面
    if math.floor(累计运行时间) % 120 == 0 then
        _G.调试输出("每2分钟点击福利页面")
        
        -- 尝试点击福利选项卡
        if node_config.福利选项卡 and _G.中心找节点(node_config.福利选项卡, true) then
            _G.调试输出("成功点击福利选项卡")
            sleep(2000)  -- 等待福利页面加载
            
            -- 返回首页
            if _G.中心找节点(node_config.首页选项卡, true) then
                _G.调试输出("返回首页")
                sleep(2000)
            end
        else
            _G.调试输出("未找到福利选项卡")
        end
    end
    
    -- 检查是否需要处理福利（每30分钟完整处理一次）
    if math.floor(累计运行时间) % 福利检查间隔 == 0 then
        _G.调试输出("开始福利检查")
        local 福利业务逻辑 = require("welfare_interface.功能_福利业务逻辑")
        福利业务逻辑()
    end
    
    -- 显示进度条
    if _G.显示进度 then
        _G.显示进度(累计运行时间, 总运行时间, "进度")
    end
    
    -- 输出运行状态（精确到秒）
    local 状态信息 = string.format("已运行%d分%d秒/%d分钟", 
        math.floor(累计运行时间/60),
        math.floor(累计运行时间%60),
        math.floor(总运行时间/60))
    
    _G.调试输出(状态信息)
        
    return true
end

-- 导出模块
return {
    初始化时间控制 = 初始化时间控制,
    功能_时间控制业务逻辑 = 功能_时间控制业务逻辑,
    获取已运行时间 = function() return 累计运行时间 end,
    获取总运行时间 = function() return 总运行时间 end
} 